package com.ssy.lingxi.product.api.model.request.warehouse;


import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;

/**
 * 新增加工入库单 - DTO
 * @author fhj
 * @date 2020/11/05
 * @version 2.0.0
 */
@Data
public class InvoicesAddOrUpdateRequest {

    /**
     * 单据id
     */
    private Long id;

    /**
     * 单据类型ID
     */
    @NotNull(message = "单据类型ID不能为空")
    private Long invoicesTypeId;

    /**
     * 对应仓库ID
     */
    @NotNull(message = "对应仓库ID不能为空")
    private Long warehouseId;

    /**
     * 对应仓库人员
     */
    @NotBlank(message = "对应仓库人员不能为空")
    private String warehouseRole;

    /**
     * 单据摘要
     */
    @NotBlank(message = "单据摘要不能为空")
    private String invoicesAbstract;

    /**
     * 单据时间
     */
    @NotNull(message = "单据时间不能为空")
    private Long invoicesTime;

    /**
     * 请求来源：1.进销存 2.单据
     */
    @NotNull(message = "请求来源不能为空")
    private Integer source;

    /**
     * 单据明细
     */
    @Valid
    @NotEmpty(message = "单据明细不能为空")
    private List<InvoicesDetailsDTO> invoicesDetailsDTOList;

    @Data
    public static class InvoicesDetailsDTO {

        /**
         * 物料ID
         */
        private Long goodsId;

        /**
         * 物料编号
         */
        private String goodsNo;

        /**
         * 物料名称
         */
        private String goodsName;

        /**
         * 规格型号
         */
        private String specifications;

        /**
         * 品类
         */
        private String category;

        /**
         * 品牌
         */
        private String brand;

        /**
         * 单位
         */
        private String unit;

        /**
         * 目录价
         */
        private BigDecimal costPrice;

        /**
         * 单据数量
         */
        private BigDecimal invoicesCount;

        /**
         * 总金额
         */
        private BigDecimal totalPrice;

        /**
         * 物料组id
         */
        private Long materialGroupId;

    }
}
